package ar.uba.fi.algo3.algoTank.model.armas;

import ar.uba.fi.algo3.algoTank.model.Objeto;
import ar.uba.fi.algo3.algoTank.model.Vector;
import ar.uba.fi.algo3.algoTank.model.formas.Rectangulo;
import ar.uba.fi.algo3.algoTank.model.tanques.Tanque;

public abstract class Arma extends Objeto {

	private int municiones;
	private Tanque tanque;

	public Arma(Tanque tanque) {
		super(new Rectangulo(1, 1, new Vector(0, 0)));
		municiones = 0;
		this.tanque = tanque;
	}

	// con municiones y un tanque asociado
	public Arma(int municiones, Tanque tanque) {
		super(new Rectangulo(1, 1, new Vector(0, 0)));
		this.municiones = municiones;
		this.tanque = tanque;
	}

	public int getMuniciones() {
		return municiones;
	}

	public Tanque getTanque() {
		return tanque;
	}

	public void setTanque(Tanque tanque) {
		this.tanque = tanque;
	}

	// Crea un proyectil y lo envia al escenario
	// debe tener municiones
	public void disparar() {
		crearProyectil();
		municiones = municiones - 1;
	}

	// Se crearan distintos proyectiles
	protected abstract void crearProyectil();

	public boolean tieneMuniciones() {
		return (municiones > 0);
	}

	public void cargarMuniciones(int cantidad) {
		municiones = municiones + cantidad;
	}

}
